package org.domain.sigepac.Entity;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;


@Entity
@Table(name="tb_parceiro")
public class Parceiro extends EntidadeAbstrata {

	private static final long serialVersionUID = 3080992004356393378L;

	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

	@Column(name = "nome", nullable = false, length = 100)
	@NotNull
	@Length(max = 100)
	private String nome;

	@Column(name = "telefone", nullable = true, length = 15)
	@Length(max = 15)
	private String telefone;

	@Column(name = "celular", nullable = true, length = 15)
	@Length(max = 15)
	private String celular;

	@Column(name = "endereco", nullable = false, length = 100)
	@NotNull
	@Length(max = 100)
	private String endereco;

	@Column(name = "bairro", nullable = false, length = 50)
	@NotNull
	@Length(max = 50)
	private String bairro;

	@Column(name="tipo",nullable=false)
	private TipoParceiro tipo;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_cidade", referencedColumnName = "id", nullable = false)
	private Cidade cidade;

	@Column(name = "cep", nullable = true, length = 8)
	@Length(max = 8)
	private String cep;


	@OneToMany(fetch=FetchType.LAZY,mappedBy="parceiro")
	@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})
	private Set<Turma> turmas;

	@Column(name="ramal",nullable=true)
	private Integer ramal;

	@Column(name="descricao",nullable=true)
	private String descricao;

	public Integer getRamal() {
		return ramal;
	}
	public void setRamal(Integer ramal) {
		this.ramal = ramal;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Serializable getId() {
		// TODO Auto-generated method stub
		return id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public Set<Turma> getTurmas() {
		return turmas;
	}

	public void setTurmas(Set<Turma> turmas) {
		this.turmas = turmas;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public TipoParceiro getTipo() {
		return tipo;
	}

	public void setTipo(TipoParceiro tipo) {
		this.tipo = tipo;
	}


}
